1. Field of the Invention
The present invention relates to a method (and system) of modeling runtime behavior for a software application, and more particularly, to a method of modeling runtime behavior for a software application which includes generating a behavior signature for an analysis scenario based on labels applied to a flow of logical content through a plurality of transformations.
2. Description of the Related Art
Large-scale applications are being built by integrating numerous libraries and frameworks (e.g., reusable frameworks), such as web application servers (e.g., servers that use Simple Object Access Protocol (SOAP), Enterprise JavaBeans™ (EJB), JavaServer Pages (JSP), etc.), portal servers, client platforms (e.g., Eclipse), and industry-specific frameworks.
While this approach has many advantages, it can make it difficult to achieve good performance, and difficult to understand and assess how and why performance is poor. Problems in these systems tend to be diffuse, rather than concentrated in a few performance hot spots. The inefficiencies in these systems reflect the combined architecture and implementation choices of numerous independent framework developers. These systems, even when tuned, seem to use an excessive amount of resources to accomplish simple functions. In general the runtime behavior of these systems can be difficult to understand.
Current approaches to solving these problems include performance tools that help identify hot spots in a single system, characterization approaches that measure low-level resource characteristics for a class of programs, and program understanding tools that analyze a single system by following the flow of physical data through program variables.
However, a number of problems are not addressed by the current approaches. Namely, these approaches do not assess whether a program or framework is using excessive resources for what the program/framework accomplishes; assess which kinds of design and framework implementation practices are performant; characterize classes of systems in a way that would enable the design and validation of appropriate benchmarks; characterize classes of systems in a way that would enable the identification of broader optimization opportunities; communicate and measure runtime phenomena in programs in a way that is familiar to people unfamiliar with particular code, and enables comparisons across disparate systems and against benchmarks; understand the behavior of systems where the primary activity is transforming and transporting information between various standards, and facilitating those transformations.